Single photon avalanche diode (SPAD) arrays can be used for a variety of applications, including ranging, Z (i.e. depth) or three-dimensional (3D) gesture recognition and for 3D imaging. A device for such applications generally comprises a light source for transmitting a light pulse into the image scene. The light reflected back from any object in the image scene is detected by the SPAD array, and is used to determine the time of flight of the light pulse. The distance from the object to the device can then be deduced based upon this time of flight.
The detection by the SPAD array of the returning light pulse is based upon event detection in the cells of the SPAD array. In particular, each cell will provide an output pulse when a photon is detected, and by monitoring the events, the arrival time of the return pulse can be estimated.
A difficulty in obtaining a valid range reading using a ranging device such as a SPAD array is that the dynamic range of the device is generally limited. In particular, a device such as a SPAD array operates by transmitting optical pulses at a certain period. The shorter this period, the faster the system will run, and thus the faster a range will be computed. However, the range that can be detected will also be lower, as the return optical pulse will have less time to return before a subsequent pulse is transmitted. Furthermore, the return pulse may be detected after a subsequent optical pulse has been transmitted, and may be mistaken for the return of the subsequent optical pulse, leading to an erroneous range value.